def default_ignore_table_fun(table_name, table_name_c):
    """
    默认的表忽略函数
    :param table_name: 表名称
    :param table_name_c: 表描述
    :return: 是否忽略这个表
    """
    return False


class DBProperties:
    """
    数据库配置信息
    database:库名称
    user：用户名
    password：密码
    host：数据库主机地址
    port：端口号
    ignore_table_fun：忽略表函数，即根据表名和表注释来判断是否不生产这个表信息，返回true表示忽略生产，返回false表示需要生成，默认生成所有表
    schema：表所在schema，例如postgresql，mysql未用到这个参数（mysql直接使用的database）
    """
    def __init__(self, database, user, password, host, port, ignore_table_fun=default_ignore_table_fun,
                 schema='public'):
        self.database = database
        self.user = user
        self.password = password
        self.host = host
        self.port = port
        self.schema = schema
        self.ignore_table_fun = ignore_table_fun


class TableField:
    """
    表字段封装信息，当前项目只会查询
    1.字段名
    2.字段类型
    3.字段长度
    4。是否可空
    5.字段描述
    """
    def __init__(self, c_name, c_type, c_length, c_nullable, c_desc):
        self.c_name = c_name
        self.c_type = c_type
        self.c_length = c_length
        self.c_nullable = c_nullable
        self.c_desc = c_desc


class Table:
    """
    表封装信息当前项目只查询
    1.表名称
    2.表描述
    3.表字段 类型为TableField
    """
    def __init__(self, t_name, t_c_name, t_fields=[]):
        self.t_name = t_name
        self.t_c_name = t_c_name
        self.t_fields = t_fields
